package top.mccsdl.Acbot.entity;

import com.alibaba.fastjson2.JSONObject;

public class Message {
    // 文本内容
    private String content;
    //频道使用 图片url
    private String image;

    // 消息类型：0 是文本，2 是 markdown，3 是 ark，4 是 embed，7 是 media 富媒体
    private Integer msgType;

    // Markdown对象（可选）
    private Object markdown;

    // Keyboard对象（可选）
    private Object keyboard;

    // Ark对象（可选）
    private Object ark;

    // 富媒体单聊的file_info（可选）
    private Object media;

    // 【暂未支持】消息引用（可选）
    // private Object messageReference;

    // 前置收到的事件 ID，用于发送被动消息（可选）
    private String eventId;

    // 前置收到的用户发送过来的消息 ID，用于发送被动（回复）消息（可选）
    private String msgId;

    // 回复消息的序号，与 msgId 联合使用，避免相同消息id回复重复发送（可选）
    // 不填默认是1。相同的 msgId + msgSeq 重复发送会失败。
    private Integer msgSeq;

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    // 默认构造函数
    public Message() {
        this.msgType = 0; // 默认值设置为0
        this.msgSeq = 1; // 默认值设置为1
    }
    public void msgSeqJ(){
        this.msgSeq++;
    }

    // Getter 和 Setter 方法

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public int getMsgType() {
        return msgType;
    }

    /**
     * 消息类型：0 是文本，2 是 markdown， 3 ark，4 embed，7 media 富媒体
     * @param msgType
     */
    public void setMsgType(Integer msgType) {
        this.msgType = (msgType != null) ? msgType : 0; // 如果传入null，则使用默认值0
    }

    public Object getMarkdown() {
        return markdown;
    }

    public void setMarkdown(Object markdown) {
        this.markdown = markdown;
    }

    public Object getKeyboard() {
        return keyboard;
    }

    public void setKeyboard(Object keyboard) {
        this.keyboard = keyboard;
    }

    public Object getArk() {
        return ark;
    }

    public void setArk(Object ark) {
        this.ark = ark;
    }

    public Object getMedia() {
        return media;
    }

    public void setMedia(Object media) {
        this.media = media;
    }

    // 暂未支持
    /*
    public MessageReference getMessageReference() {
        return messageReference;
    }

    public void setMessageReference(MessageReference messageReference) {
        this.messageReference = messageReference;
    }
    */

    public String getEventId() {
        return eventId;
    }

    /**
     * 前置收到的事件 ID，用于发送被动消息，支持事件："INTERACTION_CREATE"、"GROUP_ADD_ROBOT"、"GROUP_MSG_RECEIVE"
     * @param eventId
     */
    public void setEventId(String eventId) {
        this.eventId = eventId;
    }

    public String getMsgId() {
        return msgId;
    }

    public void setMsgId(String msgId) {
        this.msgId = msgId;
    }

    public Integer getMsgSeq() {
        return msgSeq;
    }

    public void setMsgSeq(Integer msgSeq) {
        this.msgSeq = (msgSeq != null) ? msgSeq : 1; // 如果传入null，则使用默认值1
    }

    public String toJsonStr(){
        String s = JSONObject.toJSONString(this);
        this.msgSeqJ();//消息数量+1
        return s;
    }
}
